
#ifndef ENEMY_H
#define ENEMY_H
#include <vector>
#include <string>
#include "Skill.h"
//#include "Map.h"
//#include "Fight.h"

using namespace std;

extern int EnemyCount[5];

class Enemy {
public:
	Enemy();
	Enemy(int enemyId, string name, int health, int armor, int attackPower, int money);
	virtual ~Enemy() = default;
	virtual void displayInfo() const;
	int getHealth() const;
	void setHealth(int oldHealth);
	int getAttack()const;
	int getMoney() const;			//掉落金钱
	int getArmor() const;
	void setArmor(int armor);
	int getId();
	virtual int getInternalEnergy();


protected:
	int enemyId;
	string name;
	int health;
	int armor;  //护甲值
	int attackPower;
	int money;  //掉落的金钱
};

class Enemy_npc :public Enemy {
public:
	Enemy_npc(int enemyId, string name, int health, int internalEnergy, int armor, int attackPower, int money, int skillId);
	void displayInfo() const;
	int getInternalEnergy();
	void setInternalEnergy(int mp);
	Skill getSkill()const;
	int getSkillId()const;
private:
	int internalEnergy;   //内力
	Skill npcSkill;
	int skillId;  //拥有的秘籍id
};

class Enemy_Boss :public Enemy {
public:
	Enemy_Boss(int enemyId, string name, int health, int armor, int attackPower, int money, const vector<int>& skillsId);
	Skill getSkill()const;
	vector<int> getSkillsId() const;
private:
	Skill BossSkill[3];
	vector<int> skillsId;  //拥有的秘籍id
};

void showEnemyName(int mapid);

//小怪和大怪没有特殊的属性，所以就当作Enemy类

#endif;